﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using BUS;
using DATA.BusinessObjects;
using DATA.ManagerObjects;

namespace Presentation
{
    public partial class frmTraCuuPhong : Form
    {
        private int istt = 1;
        public frmTraCuuPhong()
        {
            InitializeComponent();
        }

        private void btn_TimKiem_Click(object sender, EventArgs e)
        {
            DataGridViewComboBoxColumn dgvcbx = (DataGridViewComboBoxColumn)dgv_DanhSachKetQuaPhong.Columns["dgv_DSP_TenLoaiPhong"];
            IList<Loaiphong> lstLoaiPhong = LoaiPhongBUS.LayDanhSachLoaiPhong();
            if (lstLoaiPhong != null)
            {
                dgvcbx.DataSource = lstLoaiPhong;
                dgvcbx.DisplayMember = "TenLoaiPhong";
                dgvcbx.ValueMember = "Id";
            }

            try
            {
                Timkiem ob = new Timkiem();
                string strMaPhong = txt_MaPhong.Text;
                if (strMaPhong!="")
                {
                    ob.MaPhong = strMaPhong;
                }
                string strTenPhong = txt_TenPhong.Text;
                if(strTenPhong!="")
                {
                    ob.TenPhong = strTenPhong;
                }
                string strTenLoaiPhong = "";
                if (cbo_TenLoaiPhong.SelectedValue != null)
                {
                    strTenLoaiPhong = cbo_TenLoaiPhong.SelectedValue.ToString(); 
                }
                string strGiaTu = cbo_GiaTu.Text;
                string strGiaDen = cbo_GiaDen.Text;
                string strNgayThue = dtp_NgayThuePhong.Value.ToShortDateString();
                string strNgayTra = dtp_NgayTraPhong.Value.ToShortDateString();

                int intTinhTrangPhong = -1;
                if ( cbo_TinhTrangPhong.Text != "")
                {
                    if (cbo_TinhTrangPhong.Text == "Trống")
                    {
                        intTinhTrangPhong = 0;  // Tình trạng phòng còn trống
                    }
                    else if (cbo_TinhTrangPhong.Text == "Đang thuê")
                    {
                        intTinhTrangPhong = 1;  // Tình trạng phòng đang có người thuê
                    }
                    //Trường hợp còn lại là chọn tình trạng phòng: -1
                }

                float fGiaTu = 0;
                if (strGiaTu != "                   -----Giá từ-----")
                {
                    fGiaTu = float.Parse(strGiaTu);
                }

                float fGiaDen = 0;
                if (strGiaDen != "                   -----Giá đến-----")
                {
                    fGiaDen = float.Parse(strGiaDen);
                }

                DateTime dNgayThue = new DateTime();
                if (strNgayThue != null)
                {
                    dNgayThue = DateTime.Parse(strNgayThue);
                }

                DateTime dNgayTra = new DateTime();
                if (strNgayTra != null)
                {
                    dNgayTra = DateTime.Parse(strNgayTra);
                }

                ob.TenLoaiPhong = strTenLoaiPhong;
                ob.TinhTrangPhong = intTinhTrangPhong;
                ob.GiaPhongTu = fGiaTu;
                ob.GiaPhongDen = fGiaDen;
                ob.NgayThuePhong = dNgayThue;
                ob.NgayTraPhong = dNgayTra;

                IList<Phong> lstPhong = PhongBUS.TimKiemPhong(ob);
                //dgv_DanhSachKetQuaPhong.Rows.Clear();
                if (lstPhong.Count>0)
                {
                    dgv_DanhSachKetQuaPhong.DataSource = lstPhong;
                }
                else
                {
                    MessageBox.Show("Không có kết quả nào.");
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Lỗi, trong quá trình tìm kiếm phòng",ex);
            }
        }

        private void frmTraCuuPhong_Load(object sender, EventArgs e)
        {
            IList<Loaiphong> lstLoaiPhong = LoaiPhongBUS.LayDanhSachLoaiPhong();
            if (lstLoaiPhong != null)
            {
                cbo_TenLoaiPhong.DataSource = lstLoaiPhong;
                cbo_TenLoaiPhong.DisplayMember = "TenLoaiPhong";
                cbo_TenLoaiPhong.ValueMember = "Id";
            }
            else
            {
                MessageBox.Show("Không lấy được danh sách Loại Phòng");
            }
        }

        private void btn_Thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_CapNhatPhong_Click(object sender, EventArgs e)
        {
            int iRows = dgv_DanhSachKetQuaPhong.Rows.Count;
            if (iRows > 0)
            {
                for (int i = 0; i < iRows - 1; i++)
                {
                    string maPhong = "";
                    string tenPhong = "";
                    string tenLoaiPhong = "";
                    string strTinhTrangPhong = "";
                    string ghiChu = "";
                    int tinhTrangPhong = -1;
                    maPhong = dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_MaPhong"].Value.ToString();
                    Phong phongCapNhat = PhongBUS.LayPhongTheoMaPhong(maPhong); // Lấy phòng theo mã

                    if (dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_TenPhong"].Value != null)
                    {
                        tenPhong = dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_TenPhong"].Value.ToString();
                    }
                    if (dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_TenLoaiPhong"].Value != null)
                    {
                        tenLoaiPhong = dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_TenLoaiPhong"].Value.ToString();
                    }
                    if (dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_TinhTrangPhong"].Value != null)
                    {
                        strTinhTrangPhong = dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_TinhTrangPhong"].Value.ToString();
                        tinhTrangPhong = int.Parse(strTinhTrangPhong);
                    }
                    if (dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_GhiChu"].Value != null)
                    {
                        ghiChu = dgv_DanhSachKetQuaPhong.Rows[i].Cells["dgv_DSP_GhiChu"].Value.ToString();
                    }

                    phongCapNhat.TenPhong = tenPhong;
                    phongCapNhat.GhiChu = ghiChu;
                    phongCapNhat.TinhTrangPhong = tinhTrangPhong;    // 0: còn trống | 1: có người thuê

                    Loaiphong loaiPhong = LoaiPhongBUS.LayLoaiPhongTheoMaLoaiPhong(tenLoaiPhong);
                    if (loaiPhong != null)
                    {
                        phongCapNhat.Loaiphong = loaiPhong;
                    }

                    bool flag = PhongBUS.CapNhatPhong(phongCapNhat);
                    if (flag == false)
                    {
                        MessageBox.Show("Không cập nhật được phòng: " + i.ToString());
                    }
                }
                MessageBox.Show("Cập nhật thành công phòng");
                //LoadDanhSachPhong();
            }
        }

        private void dgv_DanhSachKetQuaPhong_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            Loaiphong loaiPhong = (Loaiphong)dgv_DanhSachKetQuaPhong.Rows[dgv_DanhSachKetQuaPhong.Rows.Count - 1].Cells["LoaiPhong"].Value;
            dgv_DanhSachKetQuaPhong.Rows[dgv_DanhSachKetQuaPhong.Rows.Count - 1].Cells["dgv_DSP_DonGia"].Value = loaiPhong.DonGia;
            dgv_DanhSachKetQuaPhong.Rows[dgv_DanhSachKetQuaPhong.Rows.Count - 1].Cells["dgv_DSP_STT"].Value = istt++;
            //Bình - thêm dòng này            
            dgv_DanhSachKetQuaPhong.Rows[dgv_DanhSachKetQuaPhong.Rows.Count - 1].Cells["dgv_DSP_TenLoaiPhong"].Value = loaiPhong.Id;
            //////////////////////
        }

        private void dgv_DanhSachKetQuaPhong_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //this.myCachedComboBox = null;
        }

        private void dgv_DanhSachKetQuaPhong_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            //this.mycbo = (ComboBox)e.Control;
        }
    }
}
